package com.xiaoshuidi.cloud.module.iot.dal.model.callback;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

/**
 * @author terry
 * create  2021-04-23 15:41
 * email terry.guo@ixiaoshuidi.com
 */
@Data
public class DanBeiDeviceCallbackReqVO {

    /**
     * 具体事件：
     * 1-设备登录登出事件
     * 2-设备操作结果
     * 3-门锁开门事件
     * 4-门锁报警事件
     * 5-水电表能耗上报事件
     */
    @Schema(description = "具体事件")
    private int eventNo;

    /**
     * 设备id
     */
    @Schema(description = "设备id")
    private  String deviceId;

    /**
     * 事件类型：
     * 0-在线转离线
     * 1-离线转在线
     */
    @Schema(description = "事件类型")
    private int event;

    /**
     * 年月日时分秒，例160318112300
     */
    @Schema(description = "年月日时分秒")
    private String time;

    /**
     * 设备登录登出事件---
     * 设备类型：
     * 0-门锁
     * 1-电表
     * 2-水表
     * 5-中控
     *
     * 水电表能耗上报事件---
     * 设备类型：
     * 1-电表
     * 2-水表
     */
    @Schema(description = "设备登录登出事件")
    private String deviceType;

    /**
     * 操作类型：
     * 1-新增
     * 2-修改
     * 3-删除
     * 4-冻结
     * 5-解除冻结（即密码恢复使用）
     * 6-清空门锁密码
     * 8-新增指纹
     * 10-修改指纹
     * 0-恢复默认值（只有管理员密码对应该值，代表门锁恢复出厂设置）
     * 20-开启指纹解锁
     * 21-关闭指纹解锁
     */
    @Schema(description = "操作类型")
    private String action;

    /**
     * 操作结果：
     * 0-操作成功
     * 1-已存在重复密码
     * 2-该类型密码存储空间已满
     * 3-该密码不存在
     * 4-其他错误408请求超时
     */
    @Schema(description = "操作结果")
    private String op_code;

    /**
     * 密码ID（仅密码操作时该字段存在值）
     */
    @Schema(description = "密码ID")
    private int pwdID;

    /**
     * 设备操作结果---
     * 密码类型：
     * 0-临时密码
     * 1-管理员密码
     * 2-管家密码
     * 3-房客密码
     * 8-时效密码
     *
     * 门锁开门事件---
     * 密码类型：
     * 0-临时密码开门
     * 1-管理员密码开门
     * 2-管家密码开门
     * 3-租客密码开门
     * 6-租客指纹开门
     * 7-无网密码开门
     * 8-时效密码开门
     * 9-门卡开门
     * 10-未知权限开门
     */
    @Schema(description = "设备操作结果")
    private int type;

    /**
     * 报警类型：
     * 1-密码错误报警
     * 2-低电报警
     * 3-防撬报警
     * 4-虚掩报警
     * 5-长时间未关门
     * 6-长时间未出门报警
     * 7-连续多次指纹验证失败
     */
    @Schema(description = "报警类型")
    private int code;

    /**
     * 门锁详细地址（当code=6及长时间未开门报警）
     */
    @Schema(description = "门锁详细地址")
    private String address;

    /**
     *房间号 （当code=6及长时间未开门报警）
     */
    @Schema(description = "房间号")
    private String homeNo;

    /**
     * 能耗读数
     */
    @Schema(description = "能耗读数")
    private double meterage;


}
